* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
:root {
    font-family: 16px;
}
body {
    width: 100%;
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    font-family: Helvetica, Arial, sans-serif;
    background-color: rgb(0, 0, 0);
}

.spark {
    position: fixed;
    top: var(--spark-top, 0);
    left: var(--spark-left, 0);
    width: var(--spark-size, 50px);
    height: var(--spark-size, 50px);
    border-radius: 50%;
    animation: spark var(--animation-duration) ease-in-out var(--delay, 0s);
    z-index: 9999;
    opacity: 0;
}

@keyframes spark {
    40% {
        /* 粒子先聚拢再散开 */
        /* transform: translate(var(--mouse-x), var(--mouse-y)); */
        opacity: 1;
    }
    100% {
        transform: translate(var(--x), var(--y));
        opacity: 0;
    }
}
